import { generalMessage } from '@/utils/generalElementCommponents';

class UseExceptionHandle implements IUseExceptionHandle {
  /**
   * 异常处理
   * @param fn - 成功函数
   * @param error - 错误信息或函数
   * @param finallyFun - 统一执行函数函数
   */
  tryCatch(
    fn: () => void,
    finallyFun: Function | null,
    error: string | Function = '操作失败：'
  ): void {
    try {
      fn();
    } catch (e: any) {
      if (typeof error === 'string') {
        generalMessage(error + e.message, 'error');
      } else {
        error(e);
      }
    } finally {
      typeof finallyFun === 'function' ? finallyFun() : null;
    }
  }
}

const useExceptionHandle = new UseExceptionHandle();
export default useExceptionHandle;
